Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
389 / 389
PptTheme
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
8
100.00% covered (success)
100.00%
389 / 389
 render
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
3 / 3
 writeTheme
100.00% covered (success)
100.00%
1 / 1
6
100.00% covered (success)
100.00%
386 / 386
1<?php
2
3namespace PhpOffice\PhpPresentation\Writer\PowerPoint2007;
4
5use PhpOffice\Common\XMLWriter;
6use PhpOffice\PhpPresentation\Slide;
7
8class PptTheme extends AbstractDecoratorWriter
9{
10    /**
11     * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
12     *
13     * @throws \Exception
14     */
15    public function render()
16    {
17        foreach ($this->oPresentation->getAllMasterSlides() as $oMasterSlide) {
18            $this->getZip()->addFromString('ppt/theme/theme' . $oMasterSlide->getRelsIndex() . '.xml', $this->writeTheme($oMasterSlide));
19        }
20
21        return $this->getZip();
22    }
23
24    /**
25     * Write theme to XML format.
26     *
27     * @return string XML Output
28     */
29    protected function writeTheme(Slide\SlideMaster $oMasterSlide)
30    {
31        $arrayFont = [
32            'Jpan' => 'MS Pゴシック',
33            'Hang' => '맑은 고딕',
34            'Hans' => '宋体',
35            'Hant' => '新細明體',
36            'Arab' => 'Times New Roman',
37            'Hebr' => 'Times New Roman',
38            'Thai' => 'Angsana New',
39            'Ethi' => 'Nyala',
40            'Beng' => 'Vrinda',
41            'Gujr' => 'Shruti',
42            'Khmr' => 'MoolBoran',
43            'Knda' => 'Tunga',
44            'Guru' => 'Raavi',
45            'Cans' => 'Euphemia',
46            'Cher' => 'Plantagenet Cherokee',
47            'Yiii' => 'Microsoft Yi Baiti',
48            'Tibt' => 'Microsoft Himalaya',
49            'Thaa' => 'MV Boli',
50            'Deva' => 'Mangal',
51            'Telu' => 'Gautami',
52            'Taml' => 'Latha',
53            'Syrc' => 'Estrangelo Edessa',
54            'Orya' => 'Kalinga',
55            'Mlym' => 'Kartika',
56            'Laoo' => 'DokChampa',
57            'Sinh' => 'Iskoola Pota',
58            'Mong' => 'Mongolian Baiti',
59            'Viet' => 'Times New Roman',
60            'Uigh' => 'Microsoft Uighur',
61        ];
62
63        // Create XML writer
64        $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
65
66        $name = 'Theme' . rand(1, 100);
67
68        // XML header
69        $objWriter->startDocument('1.0', 'UTF-8', 'yes');
70
71        // a:theme
72        $objWriter->startElement('a:theme');
73        $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
74        $objWriter->writeAttribute('name', $name);
75
76        // a:theme/a:themeElements
77        $objWriter->startElement('a:themeElements');
78
79        // a:theme/a:themeElements/a:clrScheme
80        $objWriter->startElement('a:clrScheme');
81        $objWriter->writeAttribute('name', $name);
82
83        foreach ($oMasterSlide->getAllSchemeColors() as $oSchemeColor) {
84            // a:theme/a:themeElements/a:clrScheme/a:*
85            $objWriter->startElement('a:' . $oSchemeColor->getValue());
86
87            if (in_array($oSchemeColor->getValue(), [
88                'dk1', 'lt1',
89            ])) {
90                $objWriter->startElement('a:sysClr');
91                $objWriter->writeAttribute('val', ('dk1' == $oSchemeColor->getValue() ? 'windowText' : 'window'));
92                $objWriter->writeAttribute('lastClr', $oSchemeColor->getRGB());
93                $objWriter->endElement();
94            } else {
95                $objWriter->startElement('a:srgbClr');
96                $objWriter->writeAttribute('val', $oSchemeColor->getRGB());
97                $objWriter->endElement();
98            }
99
100            // a:theme/a:themeElements/a:clrScheme/a:*/
101            $objWriter->endElement();
102        }
103
104        // a:theme/a:themeElements/a:clrScheme/
105        $objWriter->endElement();
106
107        // a:theme/a:themeElements/a:fontScheme
108        $objWriter->startElement('a:fontScheme');
109        $objWriter->writeAttribute('name', $name);
110
111        // a:theme/a:themeElements/a:fontScheme/a:majorFont
112        $objWriter->startElement('a:majorFont');
113
114        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin
115        $objWriter->startElement('a:latin');
116        $objWriter->writeAttribute('typeface', 'Calibri');
117        $objWriter->endElement();
118
119        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:ea
120        $objWriter->startElement('a:ea');
121        $objWriter->writeAttribute('typeface', '');
122        $objWriter->endElement();
123
124        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:cs
125        $objWriter->startElement('a:cs');
126        $objWriter->writeAttribute('typeface', '');
127        $objWriter->endElement();
128
129        foreach ($arrayFont as $script => $typeface) {
130            // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:font
131            $objWriter->startElement('a:font');
132            $objWriter->writeAttribute('script', $script);
133            $objWriter->writeAttribute('typeface', $typeface);
134            $objWriter->endElement();
135        }
136
137        // a:theme/a:themeElements/a:fontScheme/a:majorFont/
138        $objWriter->endElement();
139
140        // a:theme/a:themeElements/a:fontScheme/a:minorFont
141        $objWriter->startElement('a:minorFont');
142
143        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin
144        $objWriter->startElement('a:latin');
145        $objWriter->writeAttribute('typeface', 'Calibri');
146        $objWriter->endElement();
147
148        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:ea
149        $objWriter->startElement('a:ea');
150        $objWriter->writeAttribute('typeface', '');
151        $objWriter->endElement();
152
153        // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:cs
154        $objWriter->startElement('a:cs');
155        $objWriter->writeAttribute('typeface', '');
156        $objWriter->endElement();
157
158        foreach ($arrayFont as $script => $typeface) {
159            // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:font
160            $objWriter->startElement('a:font');
161            $objWriter->writeAttribute('script', $script);
162            $objWriter->writeAttribute('typeface', $typeface);
163            $objWriter->endElement();
164        }
165
166        // a:theme/a:themeElements/a:fontScheme/a:minorFont/
167        $objWriter->endElement();
168
169        // a:theme/a:themeElements/a:fontScheme/
170        $objWriter->endElement();
171
172        // a:theme/a:themeElements/a:fmtScheme
173        $objWriter->startElement('a:fmtScheme');
174        $objWriter->writeAttribute('name', $name);
175
176        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst
177        $objWriter->startElement('a:fillStyleLst');
178
179        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill
180        $objWriter->startElement('a:solidFill');
181
182        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/a:schemeClr
183        $objWriter->startElement('a:schemeClr');
184        $objWriter->writeAttribute('val', 'phClr');
185
186        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/a:schemeClr/
187        $objWriter->endElement();
188
189        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/
190        $objWriter->endElement();
191
192        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill
193        $objWriter->startElement('a:gradFill');
194        $objWriter->writeAttribute('rotWithShape', 1);
195
196        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst
197        $objWriter->startElement('a:gsLst');
198
199        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
200        $objWriter->startElement('a:gs');
201        $objWriter->writeAttribute('pos', '0');
202
203        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
204        $objWriter->startElement('a:schemeClr');
205        $objWriter->writeAttribute('val', 'phClr');
206
207        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
208        $objWriter->startElement('a:tint');
209        $objWriter->writeAttribute('val', '50000');
210        $objWriter->endElement();
211
212        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
213        $objWriter->startElement('a:satMod');
214        $objWriter->writeAttribute('val', '300000');
215        $objWriter->endElement();
216
217        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
218        $objWriter->endElement();
219
220        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
221        $objWriter->endElement();
222
223        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
224        $objWriter->startElement('a:gs');
225        $objWriter->writeAttribute('pos', '35000');
226
227        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
228        $objWriter->startElement('a:schemeClr');
229        $objWriter->writeAttribute('val', 'phClr');
230
231        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
232        $objWriter->startElement('a:tint');
233        $objWriter->writeAttribute('val', '37000');
234        $objWriter->endElement();
235
236        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
237        $objWriter->startElement('a:satMod');
238        $objWriter->writeAttribute('val', '300000');
239        $objWriter->endElement();
240
241        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
242        $objWriter->endElement();
243
244        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
245        $objWriter->endElement();
246
247        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
248        $objWriter->startElement('a:gs');
249        $objWriter->writeAttribute('pos', '100000');
250
251        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
252        $objWriter->startElement('a:schemeClr');
253        $objWriter->writeAttribute('val', 'phClr');
254
255        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
256        $objWriter->startElement('a:tint');
257        $objWriter->writeAttribute('val', '15000');
258        $objWriter->endElement();
259
260        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
261        $objWriter->startElement('a:satMod');
262        $objWriter->writeAttribute('val', '350000');
263        $objWriter->endElement();
264
265        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
266        $objWriter->endElement();
267
268        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
269        $objWriter->endElement();
270
271        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/
272        $objWriter->endElement();
273
274        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:lin
275        $objWriter->startElement('a:lin');
276        $objWriter->writeAttribute('ang', 16200000);
277        $objWriter->writeAttribute('scaled', 1);
278        $objWriter->endElement();
279
280        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/
281        $objWriter->endElement();
282
283        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill
284        $objWriter->startElement('a:gradFill');
285        $objWriter->writeAttribute('rotWithShape', 1);
286
287        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst
288        $objWriter->startElement('a:gsLst');
289
290        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
291        $objWriter->startElement('a:gs');
292        $objWriter->writeAttribute('pos', '0');
293
294        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
295        $objWriter->startElement('a:schemeClr');
296        $objWriter->writeAttribute('val', 'phClr');
297
298        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
299        $objWriter->startElement('a:shade');
300        $objWriter->writeAttribute('val', '51000');
301        $objWriter->endElement();
302
303        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
304        $objWriter->startElement('a:satMod');
305        $objWriter->writeAttribute('val', '130000');
306        $objWriter->endElement();
307
308        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
309        $objWriter->endElement();
310
311        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
312        $objWriter->endElement();
313
314        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
315        $objWriter->startElement('a:gs');
316        $objWriter->writeAttribute('pos', '80000');
317
318        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
319        $objWriter->startElement('a:schemeClr');
320        $objWriter->writeAttribute('val', 'phClr');
321
322        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
323        $objWriter->startElement('a:shade');
324        $objWriter->writeAttribute('val', '93000');
325        $objWriter->endElement();
326
327        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
328        $objWriter->startElement('a:satMod');
329        $objWriter->writeAttribute('val', '130000');
330        $objWriter->endElement();
331
332        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
333        $objWriter->endElement();
334
335        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
336        $objWriter->endElement();
337
338        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
339        $objWriter->startElement('a:gs');
340        $objWriter->writeAttribute('pos', '100000');
341
342        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
343        $objWriter->startElement('a:schemeClr');
344        $objWriter->writeAttribute('val', 'phClr');
345
346        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
347        $objWriter->startElement('a:shade');
348        $objWriter->writeAttribute('val', '94000');
349        $objWriter->endElement();
350
351        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
352        $objWriter->startElement('a:satMod');
353        $objWriter->writeAttribute('val', '135000');
354        $objWriter->endElement();
355
356        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
357        $objWriter->endElement();
358
359        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
360        $objWriter->endElement();
361
362        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/
363        $objWriter->endElement();
364
365        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:lin
366        $objWriter->startElement('a:lin');
367        $objWriter->writeAttribute('ang', 16200000);
368        $objWriter->writeAttribute('scaled', 0);
369        $objWriter->endElement();
370
371        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/
372        $objWriter->endElement();
373
374        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/
375        $objWriter->endElement();
376
377        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst
378        $objWriter->startElement('a:lnStyleLst');
379
380        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
381        $objWriter->startElement('a:ln');
382        $objWriter->writeAttribute('w', 9525);
383        $objWriter->writeAttribute('cap', 'flat');
384        $objWriter->writeAttribute('cmpd', 'sng');
385        $objWriter->writeAttribute('algn', 'ctr');
386
387        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
388        $objWriter->startElement('a:solidFill');
389
390        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
391        $objWriter->startElement('a:schemeClr');
392        $objWriter->writeAttribute('val', 'phClr');
393
394        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
395        $objWriter->startElement('a:shade');
396        $objWriter->writeAttribute('val', '95000');
397        $objWriter->endElement();
398
399        // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
400        $objWriter->startElement('a:satMod');
401        $objWriter->writeAttribute('val', '105000');
402        $objWriter->endElement();
403
404        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
405        $objWriter->endElement();
406
407        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
408        $objWriter->endElement();
409
410        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
411        $objWriter->startElement('a:prstDash');
412        $objWriter->writeAttribute('val', 'solid');
413        $objWriter->endElement();
414
415        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
416        $objWriter->endElement();
417
418        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
419        $objWriter->startElement('a:ln');
420        $objWriter->writeAttribute('w', 25400);
421        $objWriter->writeAttribute('cap', 'flat');
422        $objWriter->writeAttribute('cmpd', 'sng');
423        $objWriter->writeAttribute('algn', 'ctr');
424
425        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
426        $objWriter->startElement('a:solidFill');
427
428        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
429        $objWriter->startElement('a:schemeClr');
430        $objWriter->writeAttribute('val', 'phClr');
431
432        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
433        $objWriter->endElement();
434
435        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
436        $objWriter->endElement();
437
438        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
439        $objWriter->startElement('a:prstDash');
440        $objWriter->writeAttribute('val', 'solid');
441        $objWriter->endElement();
442
443        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
444        $objWriter->endElement();
445
446        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
447        $objWriter->startElement('a:ln');
448        $objWriter->writeAttribute('w', 38100);
449        $objWriter->writeAttribute('cap', 'flat');
450        $objWriter->writeAttribute('cmpd', 'sng');
451        $objWriter->writeAttribute('algn', 'ctr');
452
453        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
454        $objWriter->startElement('a:solidFill');
455
456        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
457        $objWriter->startElement('a:schemeClr');
458        $objWriter->writeAttribute('val', 'phClr');
459
460        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
461        $objWriter->endElement();
462
463        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
464        $objWriter->endElement();
465
466        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
467        $objWriter->startElement('a:prstDash');
468        $objWriter->writeAttribute('val', 'solid');
469        $objWriter->endElement();
470
471        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
472        $objWriter->endElement();
473
474        // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/
475        $objWriter->endElement();
476
477        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst
478        $objWriter->startElement('a:effectStyleLst');
479
480        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
481        $objWriter->startElement('a:effectStyle');
482
483        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
484        $objWriter->startElement('a:effectLst');
485
486        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
487        $objWriter->startElement('a:outerShdw');
488        $objWriter->writeAttribute('blurRad', 40000);
489        $objWriter->writeAttribute('dir', 5400000);
490        $objWriter->writeAttribute('dist', 20000);
491        $objWriter->writeAttribute('rotWithShape', 0);
492
493        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
494        $objWriter->startElement('a:srgbClr');
495        $objWriter->writeAttribute('val', '000000');
496
497        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
498        $objWriter->startElement('a:alpha');
499        $objWriter->writeAttribute('val', '38000');
500
501        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
502        $objWriter->endElement();
503
504        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
505        $objWriter->endElement();
506
507        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
508        $objWriter->endElement();
509
510        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
511        $objWriter->endElement();
512
513        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
514        $objWriter->endElement();
515
516        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
517        $objWriter->startElement('a:effectStyle');
518
519        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
520        $objWriter->startElement('a:effectLst');
521
522        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
523        $objWriter->startElement('a:outerShdw');
524        $objWriter->writeAttribute('blurRad', 40000);
525        $objWriter->writeAttribute('dir', 5400000);
526        $objWriter->writeAttribute('dist', 23000);
527        $objWriter->writeAttribute('rotWithShape', 0);
528
529        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
530        $objWriter->startElement('a:srgbClr');
531        $objWriter->writeAttribute('val', '000000');
532
533        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
534        $objWriter->startElement('a:alpha');
535        $objWriter->writeAttribute('val', '35');
536
537        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
538        $objWriter->endElement();
539
540        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
541        $objWriter->endElement();
542
543        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
544        $objWriter->endElement();
545
546        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
547        $objWriter->endElement();
548
549        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
550        $objWriter->endElement();
551
552        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
553        $objWriter->startElement('a:effectStyle');
554
555        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
556        $objWriter->startElement('a:effectLst');
557
558        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
559        $objWriter->startElement('a:outerShdw');
560        $objWriter->writeAttribute('blurRad', 40000);
561        $objWriter->writeAttribute('dir', 5400000);
562        $objWriter->writeAttribute('dist', 23000);
563        $objWriter->writeAttribute('rotWithShape', 0);
564
565        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
566        $objWriter->startElement('a:srgbClr');
567        $objWriter->writeAttribute('val', '000000');
568
569        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
570        $objWriter->startElement('a:alpha');
571        $objWriter->writeAttribute('val', '35000');
572
573        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
574        $objWriter->endElement();
575
576        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
577        $objWriter->endElement();
578
579        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
580        $objWriter->endElement();
581
582        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
583        $objWriter->endElement();
584
585        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d
586        $objWriter->startElement('a:scene3d');
587
588        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera
589        $objWriter->startElement('a:camera');
590        $objWriter->writeAttribute('prst', 'orthographicFront');
591
592        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera/a:rot
593        $objWriter->startElement('a:rot');
594        $objWriter->writeAttribute('lat', 0);
595        $objWriter->writeAttribute('lon', 0);
596        $objWriter->writeAttribute('rev', 0);
597        $objWriter->endElement();
598
599        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera/
600        $objWriter->endElement();
601
602        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig
603        $objWriter->startElement('a:lightRig');
604        $objWriter->writeAttribute('dir', 't');
605        $objWriter->writeAttribute('rig', 'threePt');
606
607        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig/a:rot
608        $objWriter->startElement('a:rot');
609        $objWriter->writeAttribute('lat', 0);
610        $objWriter->writeAttribute('lon', 0);
611        $objWriter->writeAttribute('rev', 1200000);
612        $objWriter->endElement();
613
614        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig/
615        $objWriter->endElement();
616
617        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/
618        $objWriter->endElement();
619
620        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d
621        $objWriter->startElement('a:sp3d');
622
623        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d/a:bevelT
624        $objWriter->startElement('a:bevelT');
625        $objWriter->writeAttribute('h', 25400);
626        $objWriter->writeAttribute('w', 63500);
627        $objWriter->endElement();
628
629        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d/
630        $objWriter->endElement();
631
632        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
633        $objWriter->endElement();
634
635        // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/
636        $objWriter->endElement();
637
638        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst
639        $objWriter->startElement('a:bgFillStyleLst');
640
641        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill
642        $objWriter->startElement('a:solidFill');
643
644        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/a:schemeClr
645        $objWriter->startElement('a:schemeClr');
646        $objWriter->writeAttribute('val', 'phClr');
647
648        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/a:schemeClr/
649        $objWriter->endElement();
650
651        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/
652        $objWriter->endElement();
653
654        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill
655        $objWriter->startElement('a:gradFill');
656        $objWriter->writeAttribute('rotWithShape', 1);
657
658        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst
659        $objWriter->startElement('a:gsLst');
660
661        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
662        $objWriter->startElement('a:gs');
663        $objWriter->writeAttribute('pos', '0');
664
665        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
666        $objWriter->startElement('a:schemeClr');
667        $objWriter->writeAttribute('val', 'phClr');
668
669        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
670        $objWriter->startElement('a:tint');
671        $objWriter->writeAttribute('val', '40000');
672        $objWriter->endElement();
673
674        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
675        $objWriter->startElement('a:satMod');
676        $objWriter->writeAttribute('val', '350000');
677        $objWriter->endElement();
678
679        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
680        $objWriter->endElement();
681
682        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
683        $objWriter->endElement();
684
685        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
686        $objWriter->startElement('a:gs');
687        $objWriter->writeAttribute('pos', '40000');
688
689        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
690        $objWriter->startElement('a:schemeClr');
691        $objWriter->writeAttribute('val', 'phClr');
692
693        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
694        $objWriter->startElement('a:tint');
695        $objWriter->writeAttribute('val', '45000');
696        $objWriter->endElement();
697
698        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
699        $objWriter->startElement('a:shade');
700        $objWriter->writeAttribute('val', '99000');
701        $objWriter->endElement();
702
703        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
704        $objWriter->startElement('a:satMod');
705        $objWriter->writeAttribute('val', '350000');
706        $objWriter->endElement();
707
708        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
709        $objWriter->endElement();
710
711        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
712        $objWriter->endElement();
713
714        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
715        $objWriter->startElement('a:gs');
716        $objWriter->writeAttribute('pos', '100000');
717
718        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
719        $objWriter->startElement('a:schemeClr');
720        $objWriter->writeAttribute('val', 'phClr');
721
722        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
723        $objWriter->startElement('a:shade');
724        $objWriter->writeAttribute('val', '20000');
725        $objWriter->endElement();
726
727        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
728        $objWriter->startElement('a:satMod');
729        $objWriter->writeAttribute('val', '255000');
730        $objWriter->endElement();
731
732        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
733        $objWriter->endElement();
734
735        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
736        $objWriter->endElement();
737
738        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/
739        $objWriter->endElement();
740
741        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path
742        $objWriter->startElement('a:path');
743        $objWriter->writeAttribute('path', 'circle');
744
745        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect
746        $objWriter->startElement('a:fillToRect');
747        $objWriter->writeAttribute('b', '180000');
748        $objWriter->writeAttribute('l', '50000');
749        $objWriter->writeAttribute('r', '50000');
750        $objWriter->writeAttribute('t', '-80000');
751        $objWriter->endElement();
752
753        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/
754        $objWriter->endElement();
755
756        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/
757        $objWriter->endElement();
758
759        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill
760        $objWriter->startElement('a:gradFill');
761        $objWriter->writeAttribute('rotWithShape', 1);
762
763        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst
764        $objWriter->startElement('a:gsLst');
765
766        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
767        $objWriter->startElement('a:gs');
768        $objWriter->writeAttribute('pos', '0');
769
770        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
771        $objWriter->startElement('a:schemeClr');
772        $objWriter->writeAttribute('val', 'phClr');
773
774        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
775        $objWriter->startElement('a:tint');
776        $objWriter->writeAttribute('val', '80000');
777        $objWriter->endElement();
778
779        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
780        $objWriter->startElement('a:satMod');
781        $objWriter->writeAttribute('val', '300000');
782        $objWriter->endElement();
783
784        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
785        $objWriter->endElement();
786
787        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
788        $objWriter->endElement();
789
790        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
791        $objWriter->startElement('a:gs');
792        $objWriter->writeAttribute('pos', '100000');
793
794        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
795        $objWriter->startElement('a:schemeClr');
796        $objWriter->writeAttribute('val', 'phClr');
797
798        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
799        $objWriter->startElement('a:shade');
800        $objWriter->writeAttribute('val', '30000');
801        $objWriter->endElement();
802
803        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
804        $objWriter->startElement('a:satMod');
805        $objWriter->writeAttribute('val', '200000');
806        $objWriter->endElement();
807
808        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
809        $objWriter->endElement();
810
811        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
812        $objWriter->endElement();
813
814        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/
815        $objWriter->endElement();
816
817        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path
818        $objWriter->startElement('a:path');
819        $objWriter->writeAttribute('path', 'circle');
820
821        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect
822        $objWriter->startElement('a:fillToRect');
823        $objWriter->writeAttribute('b', '50000');
824        $objWriter->writeAttribute('l', '50000');
825        $objWriter->writeAttribute('r', '50000');
826        $objWriter->writeAttribute('t', '50000');
827        $objWriter->endElement();
828
829        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/
830        $objWriter->endElement();
831
832        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/
833        $objWriter->endElement();
834
835        // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/
836        $objWriter->endElement();
837
838        // a:theme/a:themeElements/a:fmtScheme/
839        $objWriter->endElement();
840
841        // a:theme/a:themeElements/
842        $objWriter->endElement();
843
844        // a:theme/a:themeElements
845        $objWriter->writeElement('a:objectDefaults');
846
847        // a:theme/a:extraClrSchemeLst
848        $objWriter->writeElement('a:extraClrSchemeLst');
849
850        // a:theme/
851        $objWriter->endElement();
852
853        // Return
854        return $objWriter->getData();
855    }
856}